const fs = require('fs')
const path = require('path')

function mkdirs(pathname, callback) {

    // 需要判断是否是绝对路径(避免不必要的bug)
    pathname = path.isAbsolute(pathname) ? pathname : path.join(__dirname, pathname);

    // 获取相对路径
    pathname = path.relative(__dirname, pathname);

    // 拆分相对路径 [ '..', '..', 'logs', 'access.log' ]
    // path.sep 避免平台差异( Windows 上是 \   POSIX 上是 / )
    let floders = pathname.split(path.sep); 

    let pre = "";
    floders.forEach((floder, index) => {
      // console.log('hasMkdir', path.join(__dirname, pre, floder))
      // 没有异常，文件已经创建，提示用户改文件已经创建
      // let _stat = fs.statSync(path.join(__dirname, pre, floder));
      // let hasMkdir = _stat &&  _stat.isDirectory(); // 判断是否存在目录
      let hasMkdir = fs.existsSync(path.join(__dirname, pre, floder))
      if (!hasMkdir) {
        // 避免父文件还没有创建的时候先创建子文件所出现的意外bug,这里选择同步创建文件夹
        if(index === floders.length-1) {
          fs.appendFileSync(path.join(__dirname, pre, floder), '');
        } else {
          fs.mkdirSync(path.join(__dirname, pre, floder));
        }
      }
      pre = path.join(pre, floder); // 路径拼合
    });
    callback && callback(null);
  }
  
  module.exports = mkdirs;
